#pragma once

#include "Common.hpp"

using namespace SocketModule;

// client请求消息格式
// 1 + 1
class Request
{
    // 构造函数
    Request(int x, int y, char oper) : _x(x), _y(y), _oper(oper)
    {
    }

    // 序列化函数
    std::string Serialize()
    {
    }

    // 反序列化函数
    void Deserialize(std::string &in)
    {
    }

    // 析构函数
    ~Request() {}

private:
    int _x;
    int _y;
    char _oper; // 运算符号
};

// server响应消息格式
class Response
{
public:
    // 构造函数
    Response(int result, int code) : _result(result), _code(code)
    {
    }

     // 序列化函数
    std::string Serialize()
    {
    }

    // 反序列化函数
    void Deserialize(std::string &in)
    {
    }

    // 析构函数
    ~Response() {}

private:
    int _result; // 运算结果
    int _code;   // 退出码, 0表示成功, 1, 2, 3...表示不同类型失败
};


// 协议类
class Protocol
{
public:
    // 构造函数
    Protocol() {}   

    // 获取客户端request消息
    void GetRequest(std::shared_ptr<Socket> &sock,  InetAddr &client)
    {

    }

    // 析构函数
    ~Protocol() {}


};